package com.peng.mybatis.type;

import java.util.HashMap;
import java.util.Map;

public class TypeAliasRegistry {

    private final Map<String, Class<?>> TYPE_ALIAS_MAP = new HashMap<>();

    public TypeAliasRegistry() {
        // 构造函数里注册系统内置的类型别名
        registerAlias("string", String.class);

        // 基本包装类型
        registerAlias("byte", Byte.class);
        registerAlias("long", Long.class);
        registerAlias("short", Short.class);
        registerAlias("int", Integer.class);
        registerAlias("integer", Integer.class);
        registerAlias("double", Double.class);
        registerAlias("float", Float.class);
        registerAlias("boolean", Boolean.class);
    }

    public void registerAlias(String alias, Class<?> aliasClass) {
        String key = alias.toLowerCase();
        TYPE_ALIAS_MAP.put(key, aliasClass);
    }

    public Class<?> resolveAlias(String alias) {
        return TYPE_ALIAS_MAP.get(alias.toLowerCase());
    }

}
